package org.mixed.script.runtime;

import org.mixed.script.exception.ResourceNotFoundException;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class MagicResourceLoader {
    private static Map<String, Object> MODULES = new ConcurrentHashMap<>();

    /**
     * 添加模块
     *
     * @param moduleName 模块名称
     * @param target     模块，可以是对象实例，也可以是Class类型的，此时只能使用类中的静态方法
     */
    public static void addModule(String moduleName, Object target) {
        MODULES.put(moduleName, target);
    }

    /**
     * 加载模块
     *
     * @param moduleName 模块名称
     */
    public static Object loadModule(MixScriptContext context, String moduleName) {
        return loadModule(moduleName);
    }

    /**
     * 加载模块
     *
     * @param moduleName 模块名称
     */
    public static Object loadModule(String moduleName) {
        Object module = MODULES.get(moduleName);
        if (module == null){
            throw new ResourceNotFoundException("找不到模块：" + moduleName);
        }
        return module;
    }
}
